package aceim.api.dataentity; import aceim.api.utils.Utils; import android.os.Parcel; import android.os.Parcelable; /** * Abstract message entity. * * @author SergiyP * */ public abstract class Message extends Entity implements Parcelable { /** * Message text. */ private String text; /** * Contact's protocol UID (sender or recipient). */ private final String contactUid; /** * Chat participant UID. */ private String contactDetail; /** * Sending/receiving time. */ private long time; /** * Message ID. */ private long messageId; /** * If true, message is incoming, outgoing otherwise. */ private boolean isIncoming = true; protected Message(Parcel in) { super(in); text = in.readString(); contactUid = in.readString(); contactDetail = in.readString(); messageId = in.readLong(); time = in.readLong(); isIncoming = in.readByte() > 0; } protected Message(byte serviceId, String contactUid) { super(serviceId); this.contactUid = contactUid; } @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeString(text); dest.writeString(contactUid); dest.writeString(contactDetail); dest.writeLong(messageId); dest.writeLong(time); dest.writeByte((byte) (isIncoming ? 1 : 0)); } public static final Parcelable.Creator<Message> CREATOR = new Parcelable.Creator<Message>() { public Message createFromParcel(Parcel in) { return Utils.unparcelEntity(in, Message.class); } public Message[] newArray(int size) { return new Message[size]; } }; /** * @return the text */ public String getText() { return text; } /** * @param text the text to set */ public void setText(String text) { this.text = text; } /** * @return the time */ public long getTime() { return time; } /** * @param time the time to set */ public void setTime(long time) { this.time = time; } /** * @return the messageId */ public long getMessageId() { return messageId; } /** * @param messageId the messageId to set */ public void setMessageId(long messageId) { this.messageId = messageId; } /** * @return the isIncoming */ public boolean isIncoming() { return isIncoming; } /** * @param isIncoming the isIncoming to set */ public void setIncoming(boolean isIncoming) { this.isIncoming = isIncoming; } /** * @return the contactUid */ public String getContactUid() { return contactUid; } /** * @return the contactName */ public String getContactDetail() { return contactDetail; } /** * @param contactDetail the contactName to set */ public void setContactDetail(String contactDetail) { this.contactDetail = contactDetail; } @Override public String toString() { return getClass().getSimpleName() + " from " + contactUid + " from " + getServiceId(); } }